<?php
/**
 * inserisce un nuovo Domain
 */
function domainIns($mod = ""){
	/**
	 * $mod = "" esegue il redirect
	 * $mod = NOREDIR non  esegue il redirect
	 */
	global $objSDAO;
	$errMsg = "";
	$_REQUEST["domain"] = strtolower(trim($_REQUEST["domain"]));
	if(ereg("[^a-z0-9_]",$_REQUEST["domain"]))
		$errMsg .= _t("il Domain deve essere un alfanumerico (lettere, numeri e _)").".<br>";
	if(!isset($_REQUEST["type"]) || $_REQUEST["type"] == "")  
		$errMsg .= _t("Il tipo &egrave; obbligatorio")."<br>";
 	if(ereg("[^0-9]",sxRequest("length")))
		$errMsg .= _t("La lunghezza deve avere un valore numerico")."<br>";
 	if(ereg("[^0-9]",sxRequest("decimals")))
		$errMsg .= _t("I decimali devono avere un valore numerico")."<br>";
 	if ((sxRequest("enumerable")=='N' and sxREQUEST('lkp_entity') != '')
 	or  (sxRequest("enumerable")=='E' and sxREQUEST('lkp_entity') == '')
 	or  (sxRequest("enumerable")=='Y' and sxREQUEST('lkp_entity') != '')) {
		$errMsg .= _t("campi enumerabile e look-up incompatibili")."<br>";
 	}
 	if ((sxREQUEST('lkp_entity') == '' and sxREQUEST('lkp_attribute') != '')
 	or  (sxREQUEST('lkp_entity') != '' and sxREQUEST('lkp_attribute') == '')) {
		$errMsg .= _t("campi look-up entity e attribute incongruenti")."<br>";
 	}
	switch (sxREQUEST("type")) {
		case 'integer' :
		case 'date' :
		case 'date-time' :
		case 'text' :
		case 'long-text' :
		case 'blob' :
		case 'boolean' :
		 	if(sxRequest("length") != 0 or sxRequest("decimals") != 0)
				$errMsg .= _t("Lunghezza e decimali devono essere = 0")."<br>";
			break;
		case 'string' :
		case 'variable-string' :
		 	if(sxRequest("decimals") != 0)
				$errMsg .= _t("Decimali devono essere = 0")."<br>";
			break;
		default :
			break;
	}
		
	if($errMsg != "")
		return $errMsg;
	//controllo che il Domain non esista gi@
	$sSQL = "SELECT count(*) as num FROM domain WHERE domain='".$_REQUEST["domain"]."'";
	$numEntity = 0;
	if($objSDAO->query($sSQL,"test",array("contOnErr"=>true))){
		if($row = $objSDAO->fetch("test")){
			$numEntity = $row["num"]; 
		}
	}else{
		$errMsg .= $objSDAO->error;
	}
	if($numEntity != 0)
		$errMsg .= _t("Il Domain &egrave; gi&agrave; esistente")."<br>";
	if($errMsg == ""){
		if (trim($_REQUEST["description"])=='') $_REQUEST["description"] = $_REQUEST["domain"];
		$length = intval(sxRequest("length"));
		$decimals = intval(sxRequest("decimals"));
		$sSQL = "INSERT INTO " .
				"domain " .
				"(domain, " .
				"type, " .
				"length, " .
				"decimals, " .
				"lookup_entity, " .
				"lookup_attribute, " .
				"enumerable, " .				
				"description, " .
				"frequent, " .
				"note)" .
				"VALUES('".$_REQUEST["domain"]."', " .
				"'".$_REQUEST["type"]."', " .
				"".$length.", " .
				"".$decimals.", " .
				"'".addslashes(sxGPC($_REQUEST["lkp_entity"]))."', " .
				"'".addslashes(sxGPC($_REQUEST["lkp_attribute"]))."', " .
				"'".addslashes(sxGPC($_REQUEST["enumerable"]))."', " .
				"'".addslashes(sxGPC($_REQUEST["description"]))."', " .
				"'".addslashes(sxGPC($_REQUEST["frequent"]))."', " .
				"'".addslashes(sxGPC($_REQUEST["note"]))."'" .
				")";	
		if($objSDAO->query($sSQL,"ins",array("contOnErr"=>true))){
			logRecord("340", _t("Inserito il Domain '".addslashes(sxGPC($_REQUEST["domain"]))."'"));
			if($mod != "NOREDIR"){
				//serverRedir("domainList.php?xsn=".XSN);
				$url = $_SESSION[USEROBJ]->getHistory(0, true);
				serverRedir($url);
			}
		}else{
			$errMsg .= $sSQL."<br> - ".$objSDAO->error."<br>";
		}
	}
	return $errMsg;
}

/**
 * aggiorna il Domain
 */
function domainUpd(){
	global $objSDAO;
	$errMsg = "";
	$_REQUEST["new_domain"] = strtolower(trim($_REQUEST["new_domain"]));
	$_REQUEST["domain"] = strtolower(trim($_REQUEST["domain"]));
	if(!isset($_REQUEST["new_domain"]) || $_REQUEST["new_domain"] == "")
		$errMsg .= _t("Il Domain @ obbligatorio")."<br>";
	if(ereg("[^a-z0-9_]",$_REQUEST["new_domain"]))
		$errMsg .= _t("il Domain deve essere un alfanumerico (lettere, numeri e _)").".<br>";
	if(!isset($_REQUEST["type"]) || $_REQUEST["type"] == "")  
		$errMsg .= _t("Il tipo @ obbligatorio")."<br>";
		
 	if(ereg("[^0-9]",sxRequest("length")))
		$errMsg .= _t("La lunghezza deve avere un valore numerico")."<br>";
 	if(ereg("[^0-9]",sxRequest("decimals")))
		$errMsg .= _t("I decimali devono avere un valore numerico")."<br>";
 	if ((sxRequest("enumerable")=='N' and sxREQUEST('lkp_entity') != '')
 	or  (sxRequest("enumerable")=='E' and sxREQUEST('lkp_entity') == '')
 	or  (sxRequest("enumerable")=='Y' and sxREQUEST('lkp_entity') != '')) {
		$errMsg .= _t("campi enumerabile e look-up incompatibili")."<br>";
 	}
 	if ((sxREQUEST('lkp_entity') == '' and sxREQUEST('lkp_attribute') != '')
 	or  (sxREQUEST('lkp_entity') != '' and sxREQUEST('lkp_attribute') == '')) {
		$errMsg .= _t("campi look-up entity e attribute incongruenti")."<br>";
 	}
	switch (sxREQUEST("type")) {
		case 'integer' :
		case 'date' :
		case 'date-time' :
		case 'text' :
		case 'long-text' :
		case 'blob' :
		case 'boolean' :
		 	if(sxRequest("length") != 0 or sxRequest("decimals") != 0)
				$errMsg .= _t("Lunghezza e decimali devono essere = 0")."<br>";
			break;
		case 'string' :
		case 'variable-string' :
		 	if(sxRequest("decimals") != 0)
				$errMsg .= _t("Decimali devono essere = 0")."<br>";
			break;
		default :
			break;
	}
		
	if($errMsg != "") {return $errMsg;}
	
	//controllo non esistano domain_value se enumerable != Y
	$sSQL = "SELECT count(*) as num FROM domain_value " .
			" WHERE domain = '".$_REQUEST["new_domain"]."'";
	$objSDAO->query($sSQL,"test");
	$row = $objSDAO->fetch("test");
	if($row["num"] != 0 and sxRequest("enumerable")!='Y')
		$errMsg .= _t("esistono valori di Domain - enumerabile deve essere 'valori consentiti in domain_value'");
	
	//controllo che il nuovo nome del Domain, se diverso, non esista gi@
	if ($_REQUEST["new_domain"] != $_REQUEST["domain"]) {
		$sSQL = "SELECT count(*) as num FROM domain " .
				" WHERE domain = '".$_REQUEST["new_domain"]."'";
		$objSDAO->query($sSQL,"test");
		$row = $objSDAO->fetch("test");
		if($row["num"] != 0)
			$errMsg .= _t("il Domain esiste gi&agrave;");
	}
	
	if($errMsg != "")
		return $errMsg;
		
	$length = intval(sxRequest("length"));
	$decimals = intval(sxRequest("decimals"));
	$sSQL = "UPDATE " .
			"domain SET length=".$length.", " .
			"decimals=".$decimals.", " .
			"lookup_entity='".sxRAS("lkp_entity")."', " .
			"lookup_attribute='".sxRAS("lkp_attribute")."', " .
			"enumerable='".sxRAS("enumerable")."', " .
			"type='".sxRAS("type")."', " .
			"description='".sxRAS("description")."', " .
			"frequent='".sxRAS("frequent")."', " .
			"note='".sxRAS("note")."' " .
			"WHERE domain='".sxRAS("domain")."'";
			
	$objSDAO->query($sSQL,"ins");
	if ($_REQUEST["new_domain"] != $_REQUEST["domain"]) {
		$sSQL = "UPDATE domain SET domain = '".$_REQUEST["new_domain"]."'" .
			" WHERE domain = '".$_REQUEST["domain"]."'";	
		$objSDAO->query($sSQL,"upd");
		$sSQL = "UPDATE domain_value SET domain = '".$_REQUEST["new_domain"]."'" .
			" WHERE domain = '".$_REQUEST["domain"]."'";	
		$objSDAO->query($sSQL,"upd");
		$sSQL = "UPDATE attribute SET domain = '".$_REQUEST["new_domain"]."'" .
			" WHERE domain = '".$_REQUEST["domain"]."'";	
		$objSDAO->query($sSQL,"upd");
	}
	logRecord("440", _t("Modificato il Domain")." '".addslashes(sxGPC($_REQUEST["domain"]))."'");
	//serverRedir("domainList.php?xsn=".XSN);
	$url = $_SESSION[USEROBJ]->getHistory(0, true);
	serverRedir($url);
	exit();
}

/**
 * elimina il Domain
 */
function domainDel(){
	global $objSDAO;
	$errMsg = "";
	if(!isset($_REQUEST["domain"]) || $_REQUEST["domain"] == "")
		$errMsg .= _t("Il Domain &egrave; obbligatorio")."<br>";
	if($errMsg != "")
		return $errMsg;
	//verifico se il Domain @ eliminabile: non deve essere in uso
	$sSQL = "SELECT count(*) as num FROM attribute WHERE domain='".$_REQUEST["domain"]."'";
	if($objSDAO->query($sSQL,"sel",array("contOnErr"=>true))){
		if($row = $objSDAO->fetch("sel")){
			$num  = $row["num"];
			if($num > 0){
				$errMsg .= _t("Questo Domain &egrave; in uso, quindi non &egrave; possibile eliminarlo").".<br>";
			}
		}else{
			$errMsg .= $sSQL."<br> - ".$objSDAO->error;
		}
	}else{
		$errMsg .= $sSQL."<br> - ".$objSDAO->error;
	}
	if($errMsg == ""){
		$sSQL = "DELETE FROM domain " .
				"WHERE domain='".$_REQUEST["domain"]."'";
				
		if($objSDAO->query($sSQL,"del",array("contOnErr"=>true))){
			logRecord("540", _t("Eliminato il Domain")." '".addslashes(sxGPC($_REQUEST["domain"]))."'");
			$url = $_SESSION[USEROBJ]->getHistory(-1, true);
			serverRedir($url);
			exit();
		}else{
			$errMsg .= $sSQL."<br> - ".$objSDAO->error;
		}
	}
	return $errMsg;
}
?>
